class Watcher {
  constructor(vm, propName, cb) {
    this.vm = vm
    // data中的属性名
    this.propName = propName
    // 属性值变化后的回调函数
    this.cb = cb

    Dep.target = this
    this.oldValue = this.vm[this.propName]
    Dep.target = null
  }
  update() {
    const newValue = this.vm[this.propName]
    if (this.oldValue === newValue) return
    this.cb(newValue)
  }
}